package cn.wqb.bpp.common.utils;

import java.math.BigDecimal;
import java.util.regex.Pattern;

public class MathUtils {

    /**
     * 保留小数点后几位（向下取）
     *
     * @param value
     * @param scale
     * @return
     */
    public static String floorFloat(float value, int scale) {
        if (value == 0f) {
            return "0";
        }
        BigDecimal bigDecimal = new BigDecimal(value + "");
        return floorDecimal(bigDecimal, scale);
    }

    /**
     * 保留小数点后几位（向下取）
     *
     * @param value
     * @param scale
     * @return
     */
    public static String floorDouble(double value, int scale) {
        if (value == 0f) {
            return "0";
        }
        BigDecimal bigDecimal = new BigDecimal(value + "");
        return floorDecimal(bigDecimal, scale);
    }

    /**
     * 保留小数点后几位（向下取）
     *
     * @param value
     * @param scale
     * @return
     */
    public static String floorDecimal(BigDecimal value, int scale) {
        if (value.compareTo(BigDecimal.ZERO) == 0) {
            return "0";
        }
        return value.setScale(scale, BigDecimal.ROUND_DOWN) + "";
    }

    /**
     * 保留小数点后几位(四舍五入)
     *
     * @param value
     * @param scale
     * @return
     */
    public static String roundDecimal(BigDecimal value, int scale) {
        if (value.compareTo(BigDecimal.ZERO) == 0) {
            return "0";
        }
        return value.setScale(scale, BigDecimal.ROUND_HALF_UP) + "";
    }

    /**
     * 保留小数点后几位(四舍五入)
     *
     * @param value
     * @param scale
     * @return
     */
    public static String roundFloat(float value, int scale) {
        if (value == 0f) {
            return "0";
        }
        return String.format("%." + scale + "f", value);
    }

    /**
     * 保留小数点后几位(四舍五入)
     *
     * @param value
     * @param scale
     * @return
     */
    public static String roundDouble(double value, int scale) {
        if (value == 0f) {
            return "0";
        }
        return String.format("%." + scale + "f", value);
    }

    /**
     * 判断字符串是否是整数形式
     *
     * @param content
     * @return
     */
    public static boolean isInt(String content) {
        Pattern pattern = Pattern.compile("[0-9]*");
        return pattern.matcher(content).matches();
    }

}
